package fr.afcepf.qualimetrie.data;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;

import fr.afcepf.qualimetrie.entity.Stagiaire;

/**
 * DaoStagiaire.
 * @author Stagiaire
 */
public class DaoStagiaire implements IDaoStagiaire {


    /**
     * entityManager.
     */

    private EntityManager em;
/**
 * constr.
 */
    public DaoStagiaire() {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("Qualimetrie");
              em = emf.createEntityManager();
    }
    @SuppressWarnings("unchecked")
    @Override
    public List<Stagiaire> rechercher(int paramIdOrganisme) {
        Query query = em.createNamedQuery(Stagiaire.FIND_BY_ORGANISME_ID);
        query.setParameter("organismeId", paramIdOrganisme);
        List<Stagiaire> result = null;
        try {
            result = query.getResultList();
        } catch (Exception e) {
            result = new ArrayList<Stagiaire>();
        }
        return result;
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<Stagiaire> rechercher(String paramNomStagiaire) {
        Query query = em.createNamedQuery(Stagiaire.FIND_BY_NAME);
        query.setParameter("name", paramNomStagiaire);
        List<Stagiaire> result = null;
        try {
            result = query.getResultList();
        } catch (Exception e) {
            result = new ArrayList<Stagiaire>();
        }
        return result;
    }

    @Override
    public Stagiaire ajouter(Stagiaire paramStagiaire) {
        EntityTransaction trx = em.getTransaction();
        trx.begin();
        em.persist(paramStagiaire);
        em.flush();
        trx.commit();
        return paramStagiaire;

    }

    @Override
    public Stagiaire renvoi(Stagiaire paramStagiaire) {
        EntityTransaction trx = em.getTransaction();
        trx.begin();
        Stagiaire s = em.find(Stagiaire.class, paramStagiaire.getId());
        if (paramStagiaire.getOrganisme() == null) {
        s.setOrganisme(paramStagiaire.getOrganisme());
        }
        trx.commit();
        return em.merge(s);
    }

}
